discrete mathematics set operations